#ifndef GRAPHICS_CAMERA_H
#define GRAPHICS_CAMERA_H

#include <graphics/node.h>
#include <math/math.h>
#include <core/object.h>

namespace yam3d
{
namespace graphics
{
    class Camera : public core::Object//: public Node
    {
    public:
        Camera();
        virtual ~Camera();

        void setPerspective(float angle, float aspect, float nearPlane, float farPlane );
        void setClipPlanes( float nearPlane, float farPlane );
        void setFOV( float angle, float aspect );

        float getNearPlane() const;
        float getFarPlane() const;
        float getAngle() const;
        float getAspectRatio() const;

        const math::mat4& getProjection() const;
   //     math::mat4 getView() const;
   //     math::mat4 getViewProj() const;

    private:
        math::mat4 m_projection;
        float m_angle;
        float m_aspect;
        float m_nearPlane;
        float m_farPlane;

        Camera(const Camera&);
        Camera& operator=(const Camera&);
    };

}
}

#endif // GRAPHICS_CAMERA_H
